#include "sourcelist.h"

SourceList* SourceList::instance = 0;

SourceList::SourceList()
{
}

SourceList *SourceList::getInstance()
{
    if(instance == 0)
    {
        instance = new SourceList();
    }
    return instance;
}

ItemModel* SourceList::getItem(int index)
{
    if(index > -1 && index < items.size())
    {
        return items.at(index);
    }
    else
    {
        return 0;
    }
}

ItemModel* SourceList::getItem(QString path)
{
    for(int i = 0; i < items.size(); i++)
    {
        if(items.at(i)->getTrack().getPath() == path)
        {
            return items.at(i);
        }
    }
    return 0;
}

int SourceList::size()
{
    return items.size();
}

Track SourceList::getTrack(int index)
{
    return items.at(index)->getTrack();
}

void SourceList::addItem(ItemModel* item)
{
    items.append(item);
}

void SourceList::insertItem(ItemModel* item, int index)
{
    items.insert(index, item);
}

void SourceList::removeItem(int index)
{
    if(index > -1 && index < items.size())
    {
        items.removeAt(index);
    }
}

void SourceList::removeItem(ItemModel *item)
{
    items.removeOne(item);
}

int SourceList::getItemIndex(PlaylistItem * item)
{
    for(int i = 0; i < items.size(); i++)
    {
    if(items.at(i)->getTrack().getPath() == item->getTrack().getPath())
    {
        return i;
    }
    }

    return -1;
}

QList<Track> SourceList::getAllTracks()
{
    QList<Track> l;

    for(int i = 0; i < items.size(); i++)
    {
    l.append(items.at(i)->getTrack());
    }

    return l;
}

QStringList SourceList::getAllPaths()
{
    QStringList l;

    for(int i = 0; i < items.size(); i++)
    {
    l.append(items.at(i)->getTrack().getPath());
    }

    return l;
}

void SourceList::clear()
{
    items.clear();
}
